/* 
 * File:   FicheroDisperso.h
 * Author: jesus
 *
 * Created on 15 de junio de 2010, 12:54
 */

#ifndef _FICHERODISPERSO_H
#define	_FICHERODISPERSO_H
#include <iostream>
#include <string>
#include <fstream>

#include "Ficheros.h"
#include "Cubetas.h"
using namespace std;

template<class Typo,unsigned elementos,class Disp>
class FicheroDisperso{

    Cubetas<Typo,elementos> cubetaTemp;
    unsigned tamTabla;
    Ficheros<Typo> fich;
public:
    FicheroDisperso();
    FicheroDisperso(string nomb);
    ~FicheroDisperso();
    void LeerCubeta(Typo &valor,Disp &clave);
    void escribirCubeta(Typo &valor,Disp &clave);  

};
template<class Typo,unsigned elementos,class Disp>
FicheroDisperso<Typo,elementos,Disp>::FicheroDisperso(){

}
template<class Typo,unsigned elementos,class Disp>
FicheroDisperso<Typo,elementos,Disp>::FicheroDisperso(string nomb):fich(nomb){

}
template<class Typo,unsigned elementos,class Disp>
FicheroDisperso<Typo,elementos,Disp>::~FicheroDisperso(){

}
template<class Typo,unsigned elementos,class Disp>
void FicheroDisperso<Typo,elementos,Disp>::LeerCubeta(Typo &valor,Disp &clave){
    int pos=valor%tamTabla;

    cubetaTemp=fich.leer(pos);

}
template<class Typo,unsigned elementos,class Disp>
void FicheroDisperso<Typo,elementos,Disp>::escribirCubeta(Typo &valor,Disp &clave){
    int pos=valor%tamTabla;

    cubetaTemp=fich.Guardar(valor);
    fstream f;
    f.write(pos*(sizeof(int)+(sizeof(Typo)*elementos)));
}

#endif	/* _FICHERODISPERSO_H */

